Stream data processing device, stream data processing method, program, and medium

ABSTRACT

A stream data processor suitable for various applications and which performs the process of various types of stream inputs in packet data. In the stream data processor which decides individually and sequentially whether packets forming an input stream are to be processed by a predetermined process, after stream data is temporarily stored packet by packet, packet selection and data processing based on a packet identifier present in any bit position are possible.

TECHNICAL FIELD

[0001] The present invention relates to a stream data processor which identifies whether each of packets forming an input data stream is to be processed by a predetermined process, and if the packet is to be processed by the predetermined process, after performing the predetermined process, outputs in a predetermined format, and the like, and particularly to a stream data processor which can process a plurality of data streams having a different format, and the like.

BACKGROUND ART

[0002] Conventional stream data processors perform a predetermined process on a single data stream in a specific format and then output. For example, a transport stream in ISO/IEC 13818-1 (MPEG2 system) is widely known as a format of data streams. For the transport stream, a plurality of program data and other secondary information are formed into packets, and the packets are respectively given packet IDs for identifying them and form one stream. In a transport stream packet, the position and length of a bit in which a packet ID is present are fixed. Also, a packet ID is uniquely determined in a single transport stream, while duplication of packet IDs can occur in packets included in a plurality of transport streams.

[0003] A conventional stream data processor is shown in FIG. 10.

[0004] The conventional stream data processor comprises a stream input portion 1001, a packet filter 1002, a packet data processing portion 1003, and a stream output portion 1004.

[0005] The stream input portion 1001 detects a packet header from continuous bit strings in an input stream and outputs packet data.

[0006] The packet filter 1002 determines as a packet ID a bit string at a specific position in the input packet data and compares it with a designated bit string. When they match, this packet is output.

[0007] The packet data processing portion 1003 performs a predetermined process on the packet data.

[0008] The stream output portion 1004 outputs the processed packet data in a predetermined format.

[0009] The conventional stream data processor addresses only a specific format for the identification of a packet and performs a specific process for the format. In addition, it does not address simultaneous processes of a plurality of streams.

[0010] Next, a stream data processor, in which the function of the conventional stream data processor is extended so that two types of streams can be processed, is shown in FIG. 11.

[0011] In FIG. 11, the format of an input stream is analyzed in a packet analysis portion 1005, and according to the format, which process result of two packet filters 1002, which are provided so that two different types of formats can be addressed, is selected in a packet selector 1006. Similarly, which process result of two packet data processing portions 1003, which are provided so that two different types of formats can be addressed, is selected in a packet selector 1006.

[0012]FIG. 12 is a stream data processor, which is extended by locating two of the stream data processors in FIG. 11 in parallel so that two data streams each having a different type of format can be processed simultaneously.

[0013] However, when a plurality of data stream processors are formed by locating a plurality of conventional packet filters and conventional stream data processors in parallel as in FIGS. 11 and 12, the size of the device increases in proportion to the number of data streams processed, leading to an increased cost.

[0014] In this way, using conventional technique, when a data stream having a further different format is processed, or when the number of data streams processed simultaneously is increased, the size of the device further increases.

[0015] Because the identification of packets in streams having a plurality of different formats is performed, a packet filter for each format is needed. In addition, if a plurality of conventional stream data processors are provided in parallel to process a plurality of data streams simultaneously, the size of the device increases in proportion to the number of data streams processed simultaneously.

[0016] In addition, when a packet filter is provided for each format of streams, the operation of packet filters except for one corresponding to an input stream is unnecessary. For data processing portions, similarly, data processing portions except for one performing a necessary process for the packet data need not be operated. In this way, many portions that need not be operated simultaneously are present in the device, leading to much waste in the structure of the device.

DISCLOSURE OF THE INVENTION

[0017] In view of such problems of conventional stream data processors, it is an object of the present invention to provide a stream data processor which can achieve a smaller device and a lower cost, and the like.

[0018] A first invention of the present invention is a stream data processor of processing and editing one or a plurality of data streams, comprising one or a plurality of stream input portions of receiving an input data stream and performing detection of a packet header and data transfer to a buffer of storing packets; an arbitration portion of performing arbitration of a request of data transfer to the buffer of storing packets; a buffer cell allocation directing device of directing allocation of a buffer cell, one of buffers, for input of the packet header; a buffer cell allocator of allocating an unused buffer cell based on buffer cell allocation information, according to the direction of allocation of the buffer cell; a buffer cell allocation information storing portion of storing the buffer cell allocation information; a packet buffer of storing the packet data; a packet buffer controller of controlling the packet buffer; a process-waiting buffer cell information storing portion of storing a buffer cell to be processed and its process order; a packet filter of determining whether to be processed or not based on a packet identifier; one or a plurality of packet data processing portions of performing a predetermined process for the packet data; and one or a plurality of stream output portions of reconstructing the packet data as a stream and then outputting the stream.

[0019] A second invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the packet buffer comprises one storage, and the stream input portions and the processing portions respectively perform arbitration and data transfer for the packet buffer to perform packet data processing.

[0020] A third invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the packet filter is connected to the arbitration portion, and the packet filter obtains the packet identifier of a packet stored in the packet buffer by performing data transfer request to the arbitration portion and determines whether to be processed or not.

[0021] A fourth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the packet filter is connected to a controller, the controller supplies a packet identifier that is read from a packet stored in the packet buffer to the packet filter, and based on this, the packet filter determines whether to be processed or not.

[0022] A fifth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein a plurality of packet filters of determining, from the packet identifier of packet data included in a specific type of stream, whether to be processed or not are provided to enable identification with the packet identifiers of packets included in different types of stream data.

[0023] A sixth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the stream data processor has a packet filter which comprises a packet identifier reference table, a packet identifier mask table of making all or specific part of a packet identifier out of identification, an AND operator, and a comparator, and which determines whether a packet is to be processed or not by comparing a logical product of a packet identifier in the packet data and the packet identifier mask table and a logical product of the packet identifier reference table and the packet identifier mask table, and wherein identification of a packet included in stream data in which a bit length of a packet identifier is different is made possible.

[0024] A seventh invention of the present invention is the stream data processor according to the sixth invention of the present invention, wherein the stream data processor further has a process content table corresponding one-to-one to the packet identifier reference table, a packet having a specific packet identifier is detected by the packet filter, and process of the packet is performed by referring to the process content table.

[0025] An eighth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the stream data processor has a packet filter which comprises a packet identifier reference table, a stream identifier reference table, an AND operator, and a comparator, and which determines whether a packet is to be processed or not by comparing a packet identifier in the packet data and the packet identifier reference table as well as comparing a stream identifier in the packet data and the stream identifier reference table, and wherein packet selection is possible even when there is duplication of packet identifiers among a plurality of streams.

[0026] A ninth invention of the present invention is the stream data processor according to the eighth invention of the present invention, wherein the stream data processor further has a process content table corresponding one-to-one to the stream identifier reference table, and process of a packet having a specific packet identifier included in a specific data stream is performed by referring to the process content table.

[0027] A tenth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the stream data processor has a packet filter which comprises a packet identifier reference table, a packet identifier mask table of making all or specific part of a packet identifier out of identification, a stream identifier reference table, an AND operator, and a comparator, and which determines whether a packet is to be processed or not by comparing a logical product of a packet identifier in the packet data and the packet identifier mask table and a logical product of the packet identifier reference table and the packet identifier mask table as well as comparing a stream identifier in the packet data and the stream identifier mask table, and wherein identification of a packet included in a plurality of stream data in which a packet identifier has a different bit length is possible.

[0028] An eleventh invention of the present invention is the stream data processor according to the tenth invention of the present invention, wherein the stream data processor further has a process content table corresponding one-to-one to the packet identifier reference table, and process of a packet having a specific packet identifier included in a specific data stream is performed by referring to the process content table.

[0029] A twelfth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the process-waiting buffer cell information storing portion of storing a number of a buffer cell to be processed comprises one storage element of storing the number of a buffer processed in the packet data processing portion in its process order.

[0030] A thirteenth invention of the present invention is the stream data processor according to the first invention of the present inveniton, wherein the process-waiting buffer cell information storing portion of storing a number of a buffer cell to be processed comprises one storage element of storing the number of a buffer processed in the packet data processing portion in its process order and further stores the content of a predetermined process performed in the packet data processing portion.

[0031] A fourteenth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein the process-waiting buffer cell information storing portion of storing a number of a buffer cell to be processed comprises one storage element of storing the number of a buffer processed in the packet data processing portion in its process order and further stores the number of a table for referring to the process content.

[0032] A fifteenth invention of the present invention is the stream data processor according to the first invention of the present invention, wherein in the buffer cell allocation information storing portion of storing buffer cell allocation information, when there is no buffer to be allocated, that is, all buffers are used, this is detected in the buffer cell allocator, and no buffer is allocated for a buffer cell allocation request.

[0033] A sixteenth invention of the present invention is a stream data processing method of processing and editing one or a plurality of data streams, comprising the steps of:

[0034] receiving an input data stream by one or a plurality of input portions and performing detection of a packet header and data transfer to a buffer of storing packets;

[0035] performing arbitration of a request of data transfer to the buffer of storing packets by an arbitration portion;

[0036] directing allocation of a buffer cell, one of buffers, for input of the packet header by a directing device;

[0037] allocating an unused buffer cell based on buffer cell allocation information, according to the direction of allocation of the buffer cell by a buffer cell allocator;

[0038] storing the buffer cell allocation information by a buffer cell allocation information storing portion;

[0039] storing the packet data by a packet buffer;

[0040] controlling the packet buffer by a packet buffer controller;

[0041] storing a buffer cell to be processed and its process order by a process-waiting buffer cell information storing portion;

[0042] determining whether to be processed or not based on a packet identifier by a packet filter;

[0043] performing a predetermined process for the packet data by one or a plurality of packet data processing portions; and

[0044] reconstructing the packet data as a stream for output by one or a plurality of stream output portions,

[0045] A seventeenth invention of the present invention is a program of making a computer function as all or part of one or a plurality of stream input portions of receiving an input data stream and performing detection of a packet header and data transfer to a buffer of storing a packet; an arbitration portion of performing arbitration of a request of data transfer to the buffer of storing the packet; a buffer cell allocation directing device of directing allocation of a buffer cell, one of buffers, for input of the head of the packet; a buffer cell allocator of allocating an unused buffer cell based on buffer cell allocation information, according to the direction of allocation of the buffer cell; a buffer cell allocation information storing portion of storing the buffer cell allocation information; a packet buffer of storing the packet data; a packet buffer controller of controlling the packet buffer; a process-waiting buffer cell information storing portion of storing a buffer cell to be processed and its process order; a packet filter of determining whether to be processed or not based on a packet identifier; one or a plurality of packet data processing portions of performing a predetermined process for the packet data; and one or a plurality of stream output portions of reconstructing the packet data as a stream for output in the stream data processor according to claim 1.

[0046] An eighteenth invention of the present invention is a medium supporting the program according to the seventeenth invention of the present invention, which can be processed by a computer.

BRIEF DESCRIPTION OF THE DRAWINGS

[0047]FIG. 1 is a system diagram of a stream data processor capable of processing various types of streams according to a first embodiment of the present invention.

[0048]FIG. 2 is a timing chart of signals relating to a stream input portion as shown in FIG. 1.

[0049]FIG. 3 is an explanation chart showing the relationship among a buffer cell allocation information storage 303, a packet buffer 402, and a process-waiting buffer cell information storage 502 as shown in FIG. 1.

[0050]FIG. 4 is a block diagram showing the detailed structure of a packet filter 601 as shown in FIG. 1 according to a third embodiment of the present invention.

[0051]FIG. 5 is a system diagram of a stream data processor that can process various types of streams according to a second embodiment of the present invention.

[0052]FIG. 6 is a flow chart showing the operation of storing a stream input, packet by packet, into a packet buffer 402 in FIG. 1.

[0053]FIG. 7 is a flow chart showing the detailed operation of a TD controller 701 in FIG. 1.

[0054]FIG. 8 is a flow chart showing the detailed operation of a packet data processing portion in FIG. 1.

[0055]FIG. 9 is a flow chart showing the detailed operation of a stream output portion in FIG. 1.

[0056]FIG. 10 is a block diagram showing an example of the structure of a conventional stream data processor.

[0057]FIG. 11 is a block diagram showing an example of the structure of a device in which a conventional stream data processor is extended so that various types of streams can be processed.

[0058]FIG. 12 is a block diagram showing an example of the structure of a device in which a plurality of the data stream devices as shown in FIG. 11 are provided so that various types of streams can be processed.

EXPLANATION OF REFERENCES

[0059]101 stream input portion 1

[0060]102 stream input portion 2

[0061]111 packet data processing portion 1

[0062]112 packet data processing portion 2

[0063]121 stream output portion 1

[0064]122 stream output portion 2

[0065]200 arbitration portion

[0066]301 packet header detector

[0067]302 buffer cell allocator

[0068]303 buffer cell allocation information storage

[0069]401 packet buffer control portion

[0070]402 packet buffer

[0071]501 process-waiting buffer cell information controller

[0072]502 process-waiting buffer cell information storage

[0073]601 packet filter

[0074]701 TD controller

[0075]800 packet data processor

[0076] SI1, SI2 a stream input from a stream source (not shown)

[0077] REQ data transfer request signal

[0078] ENB data effective signal

[0079] SYNC packet start signal

[0080] TSD transfer data

[0081] ARB source of accepting a data transfer request

[0082] BSW buffer cell allocation direction

[0083] Iab buffer cell allocation information

[0084] Iba buffer cell use information

[0085] WD packet buffer write data

[0086] RD packet buffer read data

[0087] Ctrl packet buffer control signal

[0088] Nbuf process-waiting buffer cell number

[0089] Bwp a storage destination direction signal to a process-waiting buffer cell information storage

[0090] PID the packet identifier of a packet stored in a buffer cell to be processed

[0091] Sc a control signal of controlling the operation of each component of a packet data processor 800

[0092] Sr a state signal of notifying the state of each component of a packet data processor 800

[0093] Ac1, Ac2, Ac3, . . . AcN buffer cell allocation information area

[0094] bc1, bc2, bc3, . . . bcN buffer cell

[0095] Rc1, Rc2, Rc3, . . . RcN buffer cell designation area

[0096] RP process-waiting buffer cell information storage read pointer

[0097] WP process-waiting buffer cell information storage write pointer

[0098] TSIDREG stream identifier register

[0099] PIDREG packet identifier register

[0100] MREG mask information register

[0101] PREG packet identifier reference register

[0102] STAB stream identifier reference table

[0103] TST[1], TST[2], . . . TST[a] stream identifier reference table element

[0104] PTAB packet identifier reference table

[0105] LUT[1], LUT[2], . . . LUT[a] packet identifier reference table element

[0106] MTAB mask information reference table

[0107] MSK[1], MSK[2], . . . MSK[a] mask information reference table element

[0108] DTAB process content table

[0109] DT[1], DT[2], . . . DT[a] process content table element

[0110] BAND AND operator for each bit

[0111] CMP comparator

[0112]1001 stream input portion

[0113]1002 packet filter

[0114]1003 packet data processing portion

[0115]1004 stream output portion

[0116]1005 packet analysis portion

[0117]1006 packet selection portion

BEST MODE OF CARRYING OUT THE INVENTION

[0118] (First Embodiment)

[0119] A first embodiment of the present invention is described using FIG. 1.

[0120] Since a stream input portion 101 and a stream input portion 102 in FIG. 1 of the present invention are functionally the same, only the stream input portion 101 is described below.

[0121] The stream input potion 101 receives stream input SI1 from a stream source, which is not shown, detects the head of a packet, and transfers the data, packet by packet, to an arbitration portion 200.

[0122] This data transfer is described using FIG. 2.

[0123] The stream input portion 101 checks data input from a stream source, and when it detects the head of a packet, it notifies the transfer of the packet header to the arbitration portion 200 by signal SYNC.

[0124] Signal SYNC, which indicates the transfer of a packet header, is generated when the packet header is included in data transferred, and it is not generated when no packet header is included in the data transferred. The stream input portion 101 provides additional information IM to the data input from the stream source to perform data transfer. Additional information IM includes at least stream identifier TSID and stream type indicating code TSST and enables identification, even after being stored in a packet buffer 402, as to what type of stream the packet belongs to, and from which stream source the stream is input. In addition to stream identifier TSID, a time stamp, which indicates the time when the packet header is input to the stream input portion 101, and the like can be provided for the timing control of data processing and data output.

[0125] Also, the stream input portion 101 temporarily stores the data input from the stream source in the internal buffer. When data having a predetermined number of bytes is stored, signal REQ, which requests data transfer for writing into the packet buffer 402, is output to the arbitration portion 200.

[0126] The process algorithm of the stream input portion 101 is described using FIG. 6. The stream input portion 101 starts its operation according to the direction of a TD control portion 701, and the process proceeds to step S701.

[0127] In step S701, the stream input portion 101 searches for the head of a packet included in an input stream. It continues this until it detects the packet header. This is done for storing a complete packet in the packet buffer and for preventing the storing of data from the middle of the packet. When the packet header is detected, the process proceeds to the next step S703.

[0128] In step S703, the stream input portion 101 stores the data of the input stream in the internal buffer. Then, the process proceeds to the next step S705.

[0129] In step S705, whether the stream input portion 101 has stored data having a predetermined number of bytes in the internal buffer or not is determined. The case where the predetermined number of bytes is not reached is determined as No, and the process returns to step S703. The case where the predetermined number of bytes is reached is determined as Yes. Then, the process proceeds to the next step S707.

[0130] In step S707, the stream input portion 101 outputs data transfer request signal Req to the arbitration portion 200 in order to transfer the data stored in the internal buffer to the packet buffer 402. Then, the process proceeds to the next step 709.

[0131] In step S709, whether the data transfer request of the stream input portion 101 has been accepted or not is determined. That is, whether data effective signal ENB, which indicates that the data transfer request has been accepted from the arbitration portion 200, is effective or not is determined. The case where data effective signal ENB is not effective is determined as No, then, the process returns to step S709, and this is continued until data effective signal ENB becomes effective. The case where data effective signal ENB is effective is determined as Yes. Then, the process proceeds to the next step S711.

[0132] In step S711, the stream input portion 101 outputs to the arbitration portion 200 in order to transfer the data stored in the internal buffer to the packet buffer 402. Then, the process proceeds to the next step S713.

[0133] In step S713, whether one packet of data has been transferred from the stream input portion 101 to the packet buffer 402 or not is determined. The case where the transfer of one packet of data is not completed is determined as No, and the process returns to step S703. The case where the transfer of one packet of data is completed is determined as Yes, and the process returns to step S701 and prepares for the input of the next packet data.

[0134] The arbitration portion 200 receives a plurality of data transfer requests, such as a data transfer request for writing into the packet buffer 402 as described above and a data transfer request for reading from the packet buffer 402 as will be described later, performs arbitration, and decides which data transfer is performed. When the accepted data transfer request is that for writing into the packet buffer 402, the arbitration portion 200 generates data effective signal ENB to the data transfer requesting source of the accepted data transfer request to notify that the data transfer request has been accepted, receives transfer data TSD, and outputs the data and SYNC, which indicates that a packet header is included in the data, to a packet header detector 301. Also, the arbitration portion 200 outputs signal ARB, which indicates the data transfer requesting source selected by the arbitration, to the packet header detector 301 and a packet buffer controller 401.

[0135] When the accepted data transfer request is that for reading from the packet buffer 402, signal ARB, which indicates the data transfer requesting source of accepting a data transfer request, is output to the packet buffer controller 401. The packet buffer controller 401 reads the data from the packet buffer 402 and outputs it to the arbitration portion 200. When the output data includes a packet header, signal SYNC, which indicates the transfer of the packet header, is output to the arbitration portion 102.

[0136] When the packet header detector 301 detects that a packet header is included in transfer data WD, it outputs buffer cell allocation request signal BSW to direct a buffer cell allocator 302 to allocate a new packet storage area in the packet buffer 402.

[0137] Hereinafter, each area for storing one packet of data in the packet buffer 402 is referred to as a buffer cell.

[0138] When the buffer cell allocator 302 receives buffer cell allocation request signal BSW, it decides an unused buffer cell as an area for newly storing data by referring to buffer cell use information Iba as will be described later and outputs a number of the allocated buffer cell as buffer cell allocation information Iab to a buffer cell allocation information storage 303 and the packet buffer controller 401.

[0139] The buffer cell allocation information storage 303 receives buffer cell allocation information Iab output from the buffer cell allocator 302 to store information on how the buffer cell has been allocated, and the buffer cell allocation information storage 303 notifies buffer cell use state Iba to the buffer cell allocator 302.

[0140] The packet buffer control portion 401 controls the reading and writing of data from and into the packet buffer 402. More specifically, the packet buffer control portion 401 calculates to which buffer cell in the packet buffer 402 transfer is performed, from signal ARB, which indicates the data transfer requesting source of accepting a data transfer request output by the arbitration portion 200, and the buffer cell allocator 302. Also, signal SYNC, which indicates the transfer of a packet header, shows the first transfer to the buffer cell. In subsequent transfer to the buffer cell, a transfer destination in the buffer cell is calculated by storing a transfer destination for each transfer requesting source.

[0141] For data writing, the packet buffer control portion 401 receives write data WD from the packet header detector 301 and directs the packet buffer 402 to write using control signal Ctrl, and the write data is written into the transfer destination.

[0142] When writing into the buffer cell is completed, that is, when the next data to be processed is stored in the buffer cell, signal Nbuf, which indicates the buffer number, is output to a process-waiting buffer cell information controller 501.

[0143] For data reading, the packet buffer control portion 401 directs the packet buffer 402 to read using control signal Ctrl, reads read data RD from the transfer destination, and outputs it to the arbitration portion 200. Also, when a packet header is included in data RD read, the packet buffer control portion 401 outputs signal SYNCrd1, which indicates the transfer of the packet header, to the arbitration portion 200.

[0144] The packet buffer 402 performs data writing and reading according to the direction of the packet buffer control portion 401. It is desired that the packet buffer 402 comprises a memory, the detailed explanation of which is omitted as it is publicly known art.

[0145] The process-waiting buffer cell information controller 501 receives signal Nbuf, which indicates a number of a buffer in which the next data to be processed is present, from the packet buffer controller 401 and outputs this together with signal Bwp, which indicates a storage destination in a process-waiting buffer cell information storage 502, to the process-waiting buffer cell information storage 502.

[0146] The process-waiting buffer cell information storage 502 stores signal Nbuf, which indicates a number of a buffer in which the next data to be processed is present, in the storage destination indicated by signal Bwp, according to the direction of the process-waiting buffer cell information controller 501. It is desired that the process-waiting buffer cell information storage 502 comprises a FIFO (Fast In Fast Out) type memory, the detailed explanation of which is omitted as it is publicly known art.

[0147] Next, referring to FIG. 3, the relationship among the buffer cell allocation information storage 303, the packet buffer 402, and the process-waiting buffer cell information storage 502 as described above is briefly described. The packet buffer 402 includes N buffer cells bc1-bcN (N is a natural number of 2 or more) for temporarily storing packet data input from the stream input portions 101 and 102 and packet data processing portions 111 and 112.

[0148] The buffer cell allocation information storage 303 has buffer cell allocation information areas Ac1-AcN respectively corresponding to the buffer cells bc1-bcN of the packet buffer 402. The buffer cell allocation information storage 303 writes allocation identification data, which indicates allocation or no allocation, into the buffer cell allocation information area Acn corresponding to the allocated buffer cell bcn (n is a natural number of 1 or more and N or less), based on buffer cell allocation information Iab supplied from the buffer cell allocator 302. That is, as many buffer cell allocation information areas Ac1-AcN as the buffer cells bc1-bcN of the packet buffer 402 are prepared for the buffer cell allocation information storage 303.

[0149] For example, allocation identification data is binary data of 1 and 0, and the initial value is 0. When the buffer cell bc1 is allocated, for example, 1 is written into the buffer cell allocation information area Ac1 corresponding to the buffer cell bc1. On the other hand, after data written into the buffer cell bc1 is read, 0 is written into the buffer cell allocation information area Ac1, based on control signal Sc1 output from a TD controller 701, and the buffer cell bc1 is freed.

[0150] In this way, the respective allocation states of the buffer cells bc1-bcN included in the packet buffer 402 are expressed as a set of values in the buffer cell allocation information areas Ac1-AcN to be supplied to the buffer cell allocator 302 as allocation buffer cell information Iba.

[0151] The process-waiting buffer cell information storage 502 has buffer cell designation areas Rc (Rc1-RcN) for storing buffer cell number Nbuf, which indicates a specific one of the buffer cells bc1-bcN included in the packet buffer 402. Preferably, the process-waiting buffer cell information storage 502 comprises a ring memory, and the buffer cell designation areas Rc1-RcN are recorded continuously and cyclically.

[0152] The buffer cell designation area RcN (n is a natural number of 1 or more and N or less), into which buffer cell number Nbuf should be written, is indicated by write pointer WP. The buffer cell designation area Rcn, from which written buffer cell number Nbuf should be read, is indicated by read pointer RP. Write pointer WP is moved based on write pointer update signal Bwp output from the process-waiting buffer cell information controller 501 as described above, while read pointer RP is moved based on control signal Sc2 output from the TD controller 701.

[0153] The case where the position of write pointer WP is different from that of read pointer RP means that the buffer cell bcn indicated by the buffer cell designation area Rcn pointed by read pointer RP has finished storing data and is in a readable state. The case where write pointer WP and read pointer RP point the same position means that there is no buffer cell bcn that is in a data-readable state.

[0154] A packet filter 601 compares a packet identifier, which is provided in a specific bit position of packet data stored in a buffer cell, and a bit string indicated by the TD controller 701 and notifies that they match or mismatch to the TD controller 701. The packet identifier is read from the packet buffer 402 and supplied to the packet filter 601 by controlling the packet buffer control portion 401 by the TD controller 701.

[0155] The TD controller 701 generates control signal Sc, which controls the operation of each component of a packet data processor 800, based on state signal Sr and outputs control signal Sc to the packet data processor 800. The explanation of the control of the packet data processor 800 of generation of state signal Sr and control signal Sc are omitted as it is publicly known art.

[0156] An example of the process algorithm of the TD controller 701 is described using FIG. 7.

[0157] The TD controller 701 starts its operation after the power is ON or after the initialization process, and the process proceeds to step S801.

[0158] In step S801, whether there is a process-waiting buffer cell or not is determined. In the case where there is no process-waiting buffer cell, that is, in the case where write pointer WP and read pointer RP in the process-waiting buffer cell information storage 502 are compared and their values are equal, is determined as there being no process-waiting buffer cell, the process returns to step S801 and continues waiting until there is a process-waiting buffer cell. In the case where there is a process-waiting buffer cell, that is, in the case where write pointer WP and read pointer RP in the process-waiting buffer cell information storage 502 are compared and their values are not equal, is determined as there being a process-waiting buffer cell, and the process proceeds to the next step S803.

[0159] In step S803, the TD controller 701 reads the data of the address pointed by the read pointer RP of the process-waiting buffer cell information storage 502 and decides a buffer cell to be processed in the packet buffer 402. Then, the process proceeds to the next step S805.

[0160] In step S805, the TD controller 701 reads code TSST, which indicates the type of the stream stored in the buffer cell to be processed decided in the step S803, and decides the type of the stream stored in the buffer cell to be processed. Then, the process proceeds to the next step S807.

[0161] In step S807, the TD controller 701 calculates the address where the packet identifier PID of the packet data in the buffer cell to be processed is stored, based on the stream type decided in the step S805 and controls the packet buffer control portion 401 to read the packet identifier PID and transfer it to the packet filter 601. On the other hand, the packet filter 601 performs packet filtering. That is, it compares the packet identifier PID and a bit string indicated by the TD controller 701 and notifies that they match or mismatch to the TD controller 701. Then, the process proceeds to the next step S809.

[0162] In step S809, whether the result of the packet filtering is match or mismatch is determined. The case of mismatch is determined as No, and the process proceeds to step S817. The case of match is determined as Yes, and the process proceeds to step S811.

[0163] In step S811, what process is performed on the packet data is decided. Then, the process proceeds to the next step S813.

[0164] In step S813, the TD controller 701 instructs the packet data processing portion to perform the data processing decided in the step S811. Then, the process proceeds to the next step S815.

[0165] In step S815, the TD controller 701 instructs the stream output portion to output the packet data, on which the data processing is already performed, as a stream. Then, the process proceeds to the next step S817.

[0166] In step S817, the TD controller 701 frees the buffer cell in which the packet data, which has become unnecessary after all processes were finished, is stored in order to store newly input packet data or store packet data after data processing. Then, the process returns to step S801 and repeats the above process routine.

[0167] A packet data processing portion 111 is functionally the same as a packet data processing portion 112, and therefore, only the packet data processing portion 111 is described.

[0168] The packet data processing portion 111 performs a predetermined process on packet data stored in a buffer cell, according to the direction of the TD controller 701.

[0169] The operation of the packet data processing portion 111 is described using FIG. 8.

[0170] The packet data processing portion 111 starts its operation according to the direction of the TD control portion 701, and the process proceeds to step S901.

[0171] In step S901, whether a data processing instruction for the packet data processing portion 111 is generated from the TD controller 701 or not is determined. The case where the data processing instruction is not generated is determined as No, and the process continues waiting for the data processing instruction to be generated. The case where the data processing instruction is generated is determined as Yes, and the process proceeds to step S903.

[0172] In step S903, the packet data processing portion 111 outputs data transfer request signal Req to the arbitration portion 200 in order to read data to be processed, by the predetermined number of bytes at a time, from the packet buffer 402. Then, the process proceeds to the next step S905.

[0173] In step S905, whether the data transfer request of the packet data processing portion 111 has been accepted or not is determined. That is, whether data effective signal ENB, which indicates that the data transfer request has been accepted from the arbitration portion 200, is effective or not is determined. The case where data effective signal ENB is not effective is determined as No, and the process returns to step S905 and continues this until data effective signal ENB becomes effective. The case where data effective signal ENB is effective is determined as Yes. Then, the process proceeds to the next step S907.

[0174] In step S907, the data processing portion 111 reads data TSD read from the packet buffer 402 and stores it in the internal buffer. Then, the process proceeds to the next step S909.

[0175] In step S909, the data processing portion 111 performs the predetermined process on the data stored in the internal buffer. Then, the process proceeds to the next step S911.

[0176] In step S911, the data processing portion 111 outputs data transfer request signal Req to the arbitration portion 200 in order to write back the processed data, by the predetermined number of bytes at a time, into the packet buffer 402. Then, the process proceeds to the next step S913.

[0177] In step S913, whether the data transfer request of the packet data processing portion 111 has been accepted or not is determined. That is, whether data effective signal ENB, which indicates that the data transfer request has been accepted from the arbitration portion 200, is effective or not is determined. The case where data effective signal ENB is not effective is determined as No, and the process returns to step S913 and continues this until data effective signal ENB becomes effective. The case where data effective signal ENB is effective is determined as Yes. Then, the process proceeds to the next step S915.

[0178] In step S915, the data processing portion 111 outputs the processed data TSD and stores it in the packet buffer 402. Then, the process proceeds to the next step S917.

[0179] In step S917, whether after one packet of data was processed in the data processing portion 111, it has been written back into the packet buffer 402 or not is determined. The case where the process of one packet of data is not completed is determined as No, and the process returns to step S903 and continues data processing. The case where the process of one packet of data is completed is determined as Yes, and the process returns to step S901 and waits for the next data processing instruction from the TD controller 701.

[0180] A stream output portion 121 is functionally the same as a stream output portion 122, and therefore, only the stream output portion 121 is described.

[0181] The stream output portion 121 outputs as stream SO1 packet data stored in a buffer cell, according to the direction of the TD controller 701.

[0182] The operation of the stream output portion 121 is described using FIG. 9.

[0183] The stream output portion 121 starts its operation according to the direction of the TD control portion 701, and the process proceeds to step S1001.

[0184] In step S1001, whether a stream output instruction for the stream output portion 121 is generated from the TD controller 701 or not is determined. The case where the stream output instruction is not generated is determined as No, and the process returns to step S1001 and continues waiting for the stream output instruction. The case where the stream output instruction is generated is determined as Yes, and the process proceeds to the next step S1003.

[0185] In step S1003, the stream output portion 121 outputs data transfer request signal Req to the arbitration portion 200 in order to read data for stream output, by the predetermined number of bytes at a time, from the packet buffer 402. Then, the process proceeds to the next step S1005.

[0186] In step S1005, whether the data transfer request of the stream output portion 121 has been accepted or not is determined. That is, whether data effective signal ENB, which indicates that the data transfer request has been accepted from the arbitration portion 200, is effective or not is determined. The case where data effective signal ENB is not effective is determined as No, and the process returns to step S1005 and continues this until data effective signal ENB becomes effective. The case where data effective signal ENB is effective is determined as Yes. Then, the process proceeds to the next step S1007.

[0187] In step S1007, the stream output portion 121 reads data TSD read from the packet buffer 402 and stores it in the internal buffer. Then, the process proceeds to the next step S1009.

[0188] In step S1009, the stream output portion 121 outputs as a stream the data stored in the internal buffer. Then, the process proceeds to the next step S1011.

[0189] In step S1011, whether one packet of data has been output as a stream by the stream output portion 121 or not is determined. The case where the stream output of one packet is not completed is determined as No, and the process returns to step S1003 and continues stream output. The case where the stream output of one packet is completed is determined as Yes, and the process returns to step S1001 and waits for the next stream output instruction from the TD controller 701.

[0190] (Second Embodiment)

[0191] A second embodiment of the present invention is described using FIG. 5.

[0192]FIG. 1 in the first embodiment and FIG. 6 in the second embodiment differ in how packet identifier PID is transferred to the packet filter 601. Only this difference is described.

[0193] In the second embodiment, the TD controller 701 reads a specific bit string, which is present in a buffer cell to be processed in the packet buffer 402, and transfers this as packet identifier PID to the packet filter 601.

[0194] For different types of streams, usually, bit positions in packets in which packet identifiers are present are different. In the case of the second embodiment, if the TD controller 701 is formed by a CPU and its operation is made programmable, bit strings, which are provided in various positions in a buffer cell to be processed, can be read, so that the packet filtering of various types of streams can be implemented.

[0195] (Third Embodiment)

[0196] A third embodiment of the present invention is described using FIG. 4.

[0197]FIG. 4 is a view schematically showing the packet filter 601 which enables the packet filtering of various types of streams using stream identifier TSID and mask information MSK.

[0198] A mask information reference table MTAB comprises (a) elements MSK[1], MSK[2], . . . , and MSK[a], and the bit length of each element is L. A stream identifier reference table STAB comprises (a) elements TST[1], TST[2], . . . , and TST[a], and the bit length of each element is M. A packet identifier reference table PTAB comprises (a) elements LUT[1], LUT[2], . . . , and LUT[a], and the bit length of each element is N (a, L, M, and N are natural numbers). A process content table DTAB comprises (a) elements DT[1], DT[2], . . . , and DT [a], and stores the content of a process that should be performed on a packet to be processed, based on a comparison result of the packet filter.

[0199] The relationship of L=M+N holds among L, M, and N. The bit length of stream identifier TSID is determined depending on the number of stream input portions included in the stream data processor of the present invention. The value of each of the above elements is set previously by the TD controller 701.

[0200] Also, stream identifier TSID, which is provided to a packet to be processed by the stream input portion, is set in a stream identifier register TSIDREG, and the packet identifier PID of the packet to be processed is set in a packet identifier register PIDREG by extending the high-order bit by 0 so that the packet identifier PID has the bit length L.

[0201] Packet filtering starts according to the packet filtering instruction of the TD controller 701.

[0202] First, the number 1 element MSK[1] of the mask information reference table MTAB is read by a mask information register MREG, and the number 1 element TST[1] of the stream identifier reference table STAB and the number 1 element LUT[1] of the packet identifier reference table PTAB are read by a PLUT register PREG.

[0203] Subsequently, the connection of the stream identifier register TSIDREG and the packet identifier register PIDREG as well as the mask information register MREG are processed by an AND operator for each bit BAND. Similarly, the packet identifier reference register PREG and the mask information register MREG are processed by an AND operator for each bit BAND. Then, the results of the above two AND operations are compared by a comparator CMP, and if they match, the numbers 1 of the tables are output as the result of packet filtering.

[0204] Subsequently, similar comparison and operations are repeated for all numbers, that is, 1 to a, of the tables, and numbers for which comparison results match are output as the result of packet filtering. With this packet filter, the comparison and collation of a packet identifier having any bit length of N bit or less can be performed.

[0205] In this way, if the packet filter described in this embodiment is applied to the packet filters in the first and second embodiments, the packet filtering of various types of streams can be implemented easily and efficiently.

[0206] The present invention is a program of causing a computer to perform the function of all or part of the means (or devices, elements, circuits, portions, or the like) of the stream data processor of the present invention as described above, the program operating cooperatively with the computer.

[0207] Also, the present invention is a medium supporting the program of the present invention as described above, the program, which is readable and is read by a computer, performing the operation cooperatively with the computer.

[0208] Further, part of the means (or devices, elements, circuits, portions, or the like) of the present invention and part of the steps (or processes, operations, actions, or the like) of the present invention either mean, among a plurality of these means or steps, a number of means or steps, or mean part of the functions or operations of one means or step.

[0209] Also, in one use form of the program of the present invention, the program may be transmitted through a transmission medium, read by a computer, and operate cooperatively with the computer.

[0210] Also, the data structure of the present invention includes a database, data format, data table, data list, data type, and the like.

[0211] Also, the recording medium includes ROM and the like, and the transmission medium includes a transmission medium such as the internet, light•radio waves•acoustic waves and the like.

[0212] Also, the computer of the present invention as described above is not limited to sheer hardware such as CPU and may include firmware, OS, and further peripheral equipment.

[0213] As described above, the structure of the present invention may be implemented as software or may be implemented as hardware.

INDUSTRIAL APPLICABILITY

[0214] As described above, according to the present invention, a system suitable for the data processing of packets included in various types of streams can be implemented, and therefore, the system can be used as a platform for the stream processing of various digital information equipment such as set top boxes, digital TVs, game machines, and home gateways.

[0215] Also, in the present invention, after data in plurality of streams is stored packet by packet, packet filtering and the data processing for a selected packet are performed for each packet, and therefore, there is no need of locating a plurality of data processing portions having the same function, so that a smaller device and a lower cost can be achieved. 

1. A stream data processor of processing and editing one or a plurality of data streams, comprising one or a plurality of stream input portions of receiving an input data stream and performing detection of a packet header and data transfer to a buffer of storing packets; an arbitration portion of performing arbitration of a request of data transfer to the buffer of storing packets; a buffer cell allocation directing device of directing allocation of a buffer cell, one of buffers, for input of the packet header; a buffer cell allocator of allocating an unused buffer cell based on buffer cell allocation information, according to the direction of allocation of the buffer cell; a buffer cell allocation information storing portion of storing the buffer cell allocation information; a packet buffer of storing the packet data; a packet buffer controller of controlling the packet buffer; a process-waiting buffer cell information storing portion of storing a buffer cell to be processed and its process order; a packet filter of determining whether to be processed or not based on a packet identifier; one or a plurality of packet data processing portions of performing a predetermined process for the packet data; and one or a plurality of stream output portions of reconstructing the packet data as a stream and then outputting the stream.
 2. The stream data processor according to claim 1, wherein the packet buffer comprises one storage, and the stream input portions and the processing portions respectively perform arbitration and data transfer for the packet buffer to perform packet data processing.
 3. The stream data processor according to claim 1, wherein the packet filter is connected to the arbitration portion, and the packet filter obtains the packet identifier of a packet stored in the packet buffer by performing data transfer request to the arbitration portion and determines whether to be processed or not.
 4. The stream data processor according to claim 1, wherein the packet filter is connected to a controller, the controller supplies a packet identifier that is read from a packet stored in the packet buffer to the packet filter, and based on this, the packet filter determines whether to be processed or not.
 5. The stream data processor according to claim 1, wherein a plurality of packet filters of determining, from the packet identifier of packet data included in a specific type of stream, whether to be processed or not are provided to enable identification with the packet identifiers of packets included in different types of stream data.
 6. The stream data processor according to claim 1, wherein the stream data processor has a packet filter which comprises a packet identifier reference table, a packet identifier mask table of making all or specific part of a packet identifier out of identification, an AND operator, and a comparator, and which determines whether a packet is to be processed or not by comparing a logical product of a packet identifier in the packet data and the packet identifier mask table and a logical product of the packet identifier reference table and the packet identifier mask table, and wherein identification of a packet included in stream data in which a bit length of a packet identifier is different is made possible.
 7. The stream data processor according to claim 6, wherein the stream data processor further has a process content table corresponding one-to-one to the packet identifier reference table, a packet having a specific packet identifier is detected by the packet filter, and process of the packet is performed by referring to the process content table.
 8. The stream data processor according to claim 1, wherein the stream data processor has a packet filter which comprises a packet identifier reference table, a stream identifier reference table, an AND operator, and a comparator, and which determines whether a packet is to be processed or not by comparing a packet identifier in the packet data and the packet identifier reference table as well as comparing a stream identifier in the packet data and the stream identifier reference table, and wherein packet selection is possible even when there is duplication of packet identifiers among a plurality of streams.
 9. The stream data processor according to claim 8, wherein the stream data processor further has a process content table corresponding one-to-one to the stream identifier reference table, and process of a packet having a specific packet identifier included in a specific data stream is performed by referring to the process content table.
 10. The stream data processor according to claim 1, wherein the stream data processor has a packet filter which comprises a packet identifier reference table, a packet identifier mask table of making all or specific part of a packet identifier out of identification, a stream identifier reference table, an AND operator, and a comparator, and which determines whether a packet is to be processed or not by comparing a logical product of a packet identifier in the packet data and the packet identifier mask table and a logical product of the packet identifier reference table and the packet identifier mask table as well as comparing a stream identifier in the packet data and the stream identifier mask table, and wherein identification of a packet included in a plurality of stream data in which a packet identifier has a different bit length is possible.
 11. The stream data processor according to claim 10, wherein the stream data processor further has a process content table corresponding one-to-one to the packet identifier reference table, and process of a packet having a specific packet identifier included in a specific data stream is performed by referring to the process content table.
 12. The stream data processor according to claim 1, wherein the process-waiting buffer cell information storing portion of storing a number of a buffer cell to be processed comprises one storage element of storing the number of a buffer processed in the packet data processing portion in its process order.
 13. The stream data processor according to claim 1, wherein the process-waiting buffer cell information storing portion of storing a number of a buffer cell to be processed comprises one storage element of storing the number of a buffer processed in the packet data processing portion in its process order and further stores the content of a predetermined process performed in the packet data processing portion.
 14. The stream data processor according to claim 1, wherein the process-waiting buffer cell information storing portion of storing a number of a buffer cell to be processed comprises one storage element of storing the number of a buffer processed in the packet data processing portion in its process order and further stores the number of a table for referring to the process content.
 15. The stream data processor according to claim 1, wherein in the buffer cell allocation information storing portion of storing buffer cell allocation information, when there is no buffer to be allocated, that is, all buffers are used, this is detected in the buffer cell allocator, and no buffer is allocated for a buffer cell allocation request.
 16. A stream data processing method of processing and editing one or a plurality of data streams, comprising the steps of: receiving an input data stream by one or a plurality of input portions and performing detection of a packet header and data transfer to a buffer of storing packets; performing arbitration of a request of data transfer to the buffer of storing packets by an arbitration portion; directing allocation of a buffer cell, one of buffers, for input of the packet header by a directing device; allocating an unused buffer cell based on buffer cell allocation information, according to the direction of allocation of the buffer cell by a buffer cell allocator; storing the buffer cell allocation information by a buffer cell allocation information storing portion; storing the packet data by a packet buffer; controlling the packet buffer by a packet buffer controller; storing a buffer cell to be processed and its process order by a process-waiting buffer cell information storing portion; determining whether to be processed or not based on a packet identifier by a packet filter; performing a predetermined process for the packet data by one or a plurality of packet data processing portions; and reconstructing the packet data as a stream for output by one or a plurality of stream output portions,
 17. A program of making a computer function as all or part of one or a plurality of stream input portions of receiving an input data stream and performing detection of a packet header and data transfer to a buffer of storing a packet; an arbitration portion of performing arbitration of a request of data transfer to the buffer of storing the packet; a buffer cell allocation directing device of directing allocation of a buffer cell, one of buffers, for input of the head of the packet; a buffer cell allocator of allocating an unused buffer cell based on buffer cell allocation information, according to the direction of allocation of the buffer cell; a buffer cell allocation information storing portion of storing the buffer cell allocation information; a packet buffer of storing the packet data; a packet buffer controller of controlling the packet buffer; a process-waiting buffer cell information storing portion of storing a buffer cell to be processed and its process order; a packet filter of determining whether to be processed or not based on a packet identifier; one or a plurality of packet data processing portions of performing a predetermined process for the packet data; and one or a plurality of stream output portions of reconstructing the packet data as a stream for output in the stream data processor according to claim
 1. 18. A medium supporting the program according to claim 17, which can be processed by a computer. 